package org.pf.interfaces 
{
	import Box2D.Common.Math.b2Vec2;
	import Box2D.Dynamics.b2Body;
	import Box2D.Dynamics.b2ContactListener;
	
	
	 /**
	 * ...
	 * @author zeksa'
	 */
	public interface IPFConstructor 
	{
		function setEnviroment(levelName:String) : void
		function addContactListener(customListener:b2ContactListener) : void
		function makeStageWalls(haveBackWalls:Array, haveBottomWalls:Array, backWallThickness:Number, bottomWallThickness:Number, gWidth:Number, gHeight:Number) : void
		function startConstruction() : void
		function makePolygonal(width:Number, height:Number, posX:Number, posY:Number, rot:Number, mass:Number, fric:Number, restit:Number, sensor:Boolean=false, isDynamic:Boolean=false, name:String=null, hasImage:Boolean=false, textureName:String=null, type:String=null, applyImpulse:Boolean=false, impulse:b2Vec2=null) : b2Body
		function makeCircle(radius:Number, posX:Number, posY:Number, rot:Number, mass:Number, fric:Number, restit:Number, sensor:Boolean=false, isDynamic:Boolean=false, name:String=null, hasImage:Boolean=false, textureName:String=null, type:String=null, applyImpulse:Boolean=false, impulse:b2Vec2=null) : b2Body
		function makeConvex(vertices:Array, posX:Number, posY:Number, rot:Number, mass:Number, fric:Number, restit:Number, sensor:Boolean=false, isDynamic:Boolean=false, name:String=null, hasImage:Boolean=false, textureName:String=null, type:String=null) : void
		function makeRevoluteJoint(bodyA:b2Body, bodyB:b2Body, anchorA:b2Vec2, anchorB:b2Vec2, isRope:Boolean, ropeName:String, isFirstLink:Boolean, isLastLink:Boolean) : void
		function makeDistanceJoint(bodyA:b2Body, bodyB:b2Body, anchorA:b2Vec2, anchorB:b2Vec2) : void
		function makeRope(ropeLength:Number, numberOfLinks:Number, bodyA:b2Body, bodyB:b2Body, anchorA:b2Vec2, anchorB:b2Vec2, ropeName:String) : void
	}

}